package cn.mazexal.examapi.models.thirdpart.huawei;

/**
 * @author: Mazexal
 * Date: 2025/6/29
 */

import lombok.Data;

import java.io.Serializable;

/**
 * 备注
 *
 * @author Lay
 * @date 2020/3/16
 */
@Data
public class HuaweiPayReq implements Serializable {
    /**
     * 商户对商品的自定义名称。此名称将会在支付时显示给用户确认。
     */
    private String productName;

    /**
     * 商户对商品的自定义描述。
     */
    private String productDesc;

    /**
     * 应用ID，在创建应用后由华为开发者联盟为应用分配的唯一标识。
     */
    private String applicationID;

    /**
     * 商户侧的支付订单号，用于唯一标识一次支付请求。
     */
    private String requestId;

    /**
     * 商品金额，商品需要支付的金额。此金额将会在支付时显示给用户确认。
     */
    private String amount;

    /**
     * 商户ID，即华为开发者联盟给开发者分配的“支付ID”。
     */
    private String merchantId;

    /**
     * 商品类型。
     * ● X4：主题
     * ● X5：应用商店
     * ● X6：游戏
     * ● X7：天际通
     * ● X8：云空间
     * ● X9：电子书
     * ● X10：华为学习
     * ● X11：音乐
     * ● X12： 视频
     * ● V0：vmall实体商品
     * ● X31：话费充值
     * ● X32：机票/酒店
     * ● X33：电影票
     * ● X34：团购
     * ● X35：手机预购
     * ● X36：公共缴费
     * ● X37：基金理财
     * ● X38：彩票
     * ● X39：流量充值
     * 游戏应用请设置为“X6”，普通应用请设置为“X5”。
     * 如果传入类型错误，会影响风控，请开发者按照真实业务类型传入。
     */
    private String serviceCatalog;

    /**
     * 商户名称，配置为注册开发者时配置的公司名。
     */
    private String merchantName;

    /**
     * 渠道信息。
     * ● 0：自有应用，无渠道
     * ● 1：华为应用市场渠道
     * ● 2：预装渠道
     * ● 3：游戏中心
     * 游戏设置为3，普通应用设置为1。
     */
    private String sdkChannel;

    /**
     * 支付结果回调地址，用于华为支付服务器在支付完成后调用支付成功回调接口将支付结果通知给开发者服务器。
     * 如果开发者在申请支付服务时已配置“回调地址”，则华为支付服务器会优先使用申请支付服务时配置的回调地址。如果未配置，则使用此参数中的回调地址。
     * 回调地址必须是合法的url，长度最大255，不能以‘\’结尾，不能包含get参数。
     * 正确示例：http://domain.com/path
     * 错误示例：http://domain.com/path?key=value
     */
    private String url;

    /**
     * 用于支付该商品的币种，必须符合ISO 4217标准，例如USD、CNY、MYR。
     * 如果不传该参数，默认为CNY。
     */
    private String currency;

    /**
     * 国家码，用于区分国家信息，必须符合ISO 3166标准，如US、CN、MY。
     * 如果不传该参数，默认为CN。
     */
    private String country;

    /**
     * 支付结果回调版本。该参数可以不传，如果传值则必须传入固定值2，否则会导致支付不成功。
     * 注意：在生成签名字符串时该字段的名称必须修改为“urlver”, 字母v小写，否则会导致验签失败。
     */
    private String urlVer;

    /**
     * 商户侧保留信息。如果该字段有值，在接口回调结果中原样返回。
     */
    private String extReserved;

    /**
     * 用于支付验签的签名字符串。
     * 为防止请求被篡改，应用需要根据支付签名的生成方法中的方法生成签名字符串，华为服务器在收到请求后会对签名字符串进行验签，验签成功后才会进行后续处理，否则将返回失败错误码。
     */
    private String sign;
}
